#ifndef RLBET_H
#define RLBET_H

/****************************************************
 
Shouldn't instantiate this class, but rather one of it's subclasses
  (AmericanRouletteBet, EuropeanRouletteBet, etc)

******************************************************/

class RouletteBet 
{
	public:
		RouletteBet(uint8);
		RouletteBet(uint8, int32);
		~RouletteBet(void);

		int32 getAmount(void);
		void setAmount(int32);
		uint8 getNumber(uint8);
		uint8 numNumbers(void);

		uint8 getBetID() { return m_betID; }

		bool8 hasNumber(uint8);

		virtual bool8 isInside()=0;
		bool8 isOutside();

		virtual void setOdds()=0;
		virtual int8 getOdds()=0;

		virtual int8 getColor()=0;

		bool8 isMacroBet() { return m_macro; };

		enum RouletteColors { Red, Green, Black };
		enum BetIds { ID_00 = 37 };

	protected:
		void  setMacroBet(bool8 macro) { m_macro = macro; };
		bool8 addNumber(uint8);
		bool8 addRange(uint8, uint8, uint8);

	protected:
		enum Constants { MAX_NUMBERS = 18 };

	protected:
		uint8	m_betID;
		int32	m_amount;
		uint8	m_numNumbers;
		uint8	m_numbers[MAX_NUMBERS];
		bool8	m_macro;
};

inline
RouletteBet::~RouletteBet(void)
{
}


inline int32 
RouletteBet::getAmount(void)
{
	return m_amount;
}

inline void 
RouletteBet::setAmount(int32 amount)
{
	m_amount=amount;
}

inline uint8
RouletteBet::numNumbers()
{
	return m_numNumbers;
}

inline bool8
RouletteBet::isOutside()
{
	return !isInside();
}

#endif
